CC = gcc

CFLAGS += -Wall -g

all: gen_frontend gen_backend gen_innerc gen_innerh gen_cmd gen_table pkcs11_test pkcs11_server

OBJS = proto.o 

gen_frontend: $(OBJS) frontend.o gen_frontend.o
	$(CC) -o gen_frontend $(OBJS) frontend.o gen_frontend.o

gen_cmd: $(OBJS) cmd.o gen_cmd.o
	$(CC) -o gen_cmd $(OBJS) cmd.o gen_cmd.o

gen_table: $(OBJS) gen_table.o innerh.o
	$(CC) -o gen_table $(OBJS) gen_table.o innerh.o

gen_backend: $(OBJS) backend.o gen_backend.o
	$(CC) -o gen_backend $(OBJS) backend.o gen_backend.o

gen_innerc: $(OBJS) innerc.o gen_innerc.o
	$(CC) -o gen_innerc $(OBJS) innerc.o gen_innerc.o

gen_innerh: $(OBJS) innerh.o gen_innerh.o
	$(CC) -o gen_innerh $(OBJS) innerh.o gen_innerh.o

pkcs11_test: auto_frontend_pkcs11.c auto_frontend_pkcs11.o auto_cmd.h session.o pkcs11_test.o chan.o
	$(CC) -o pkcs11_test auto_frontend_pkcs11.o session.o pkcs11_test.o chan.o

pkcs11_server: auto_backend_pkcs11.c auto_inner_pkcs11.c auto_inner_pkcs11.h auto_table.c auto_backend_pkcs11.o auto_inner_pkcs11.o pkcs11_server.o chan.o auto_table.o
	$(CC) -o pkcs11_server auto_backend_pkcs11.o auto_inner_pkcs11.o pkcs11_server.o chan.o auto_table.o -lpthread 

auto_cmd.h: gen_cmd pkcs11.c
	./gen_cmd pkcs11.c auto_cmd.h

auto_frontend_pkcs11.c: gen_frontend auto_cmd.h pkcs11.c
	./gen_frontend pkcs11.c auto_frontend_pkcs11.c

auto_backend_pkcs11.c: gen_backend pkcs11.c
	./gen_backend pkcs11.c auto_backend_pkcs11.c

auto_inner_pkcs11.h: gen_innerh pkcs11.c
	./gen_innerh pkcs11.c auto_inner_pkcs11.h

auto_inner_pkcs11.c: gen_innerc pkcs11.c 
	./gen_innerc pkcs11.c auto_inner_pkcs11.c

auto_table.c: gen_table pkcs11.c 
	./gen_table pkcs11.c auto_table.c

clean:
	rm -rf *.o gen_frontend gen_backend gen_innerc gen_innerh gen_cmd gen_talbe
	rm -rf auto_frontend_pkcs11.c auto_backend_pkcs11.c auto_inner_pkcs11.c auto_inner_pkcs11.h auto_cmd.h
	rm -rf auto_table.c gen_table
	rm -rf pkcs11_test pkcs11_server
